序言
为了更好地提高学习效率,这几天调整了学习计划,决定把学习时间分段进行不同知识的并行学习,效果还是十分明显的。。。这几天也会和大家分享一下有关于Javascript算法的学习心得,,今天和大家分享的是有关于字符串的反转,看见大漠老师有相关知识的总结,所以偷一下懒了啦~~借鉴一下,,我进行了相关的调整,如果想要观看原文,请点击这里。
问题描述
将一个字符串进行反转,如”Hello World!”进行反转,结果为”!droW olleH”。
基本方法
我想大家如果看见这个算法题目,首先想到的应该是使用字符串和数组的内置函数:
- String.prototype.split()
- Array.prototype.reverse()
- Array.prototype.join()
其中:
- split() - 拆分字符串的每个字符,并将其当做数组的每个元素
- reverse() - 进行数组元素的反转
- join() - 将数组 的每个元素按照一定的规则进行连接,使其成为一个新的字符串
下面让我们使用这三种方法实现上述的算法题目:
1 | function reverseString(str) { |
简化之
1 | function reverseString(str) { |
使用循环遍历反转字符串
我们也可以使用循环遍历实现字符串的反转,思路为:创建一个空字符串,将原始字符串进行循环递减遍历,将其每一个字符添加到新字符串上面,如:
1 | function reverseString(str) { |
使用while
循环语句的的话为:
1 | function reverseString (str) { |
注: 其中substring()
方法返回字符串两个索引之间的子串。
使用递归算法
首先我先讲一下使用到的两个方法:
- charAt() - 以单字符字符串的形式返回给定位置的那个字符。
- sunstr() - 返回被操作字符串的一个子字符串,可以接收一个或者两个参数。第一个参数指定子字符串的开始位置,第二个参数(指定的情况下)表示返回子字符串的字符个数。若 没有传递第二个参数,则将字符串的长度作为结束位置。若 传递的参数为负值,则将负的第一个参数加上字符串的长度.第二个负的参数转换为0。
算法实现为:
1 | function reverseString(str) { |
注: 这个递归算法看起来有点困难,我也是捉摸了一小会儿才搞明白,,大家还是看看大漠老师原文里面的讲解吧,,有助于你的理解奥~~ 点击这里。
三元操作符简化之:
1 | function reverseString(str) { |
或
1 | function reverseString(str) { |
总结
还有一些方法可以实现,但是我想先讲解这三种比较简单的实现方法,,希望大家会喜欢呀 ~~ 希望可以帮助到大家 ~~
对了,,记得自己动手实践一下下奥~~~